#ifndef __INVERTINDEXLIB_H__
#define __INVERTINDEXLIB_H__

#include "WordSegmentation.h"

#include <string>
#include <set>
#include <unordered_map>
#include <map>

using std::string;
using std::pair;
using std::set;
using std::unordered_map;
using std::map;

class InvertIndexLib {
public:
    InvertIndexLib(const string ripepageLibFileName, const string offsetLibFileName, const string stopWordFileName);
    void create(); 
private:
    void makeOffsetMap();//把偏移库读进map
    void makeStopWordVec();//读停用词进vector
    void makeWordWeiMap(const vector<string> &word, int N, int id);//把词语出现的次数记录下来计算TF
    void helpMakeWordWeiMap();
    void rmStop(vector<string> &);
    void createInvertLib();
private:
    int _pageNum;
    const string _ripepageLibFileName;//网页库文件名
    const string _offsetLibFileName;//偏移库文件名
    const string _stopWordFileName;//停用词文件名
    unordered_map<int, pair<int, int>> _offsetLib;//装偏移库
    map<string, int> _stopWord;//装停用词
    unordered_map<string, unordered_map<int, pair<int, double>>> _wordWei;//词语，id，次数，权重
    map<int, set<string>> _helpMap;//文章id,cppjieba分词结果
    unordered_map<string, int> _totalTimes;//短语在文章中出现的总次数
    WordSegmentation _wordSeg;

public:
    //测试
    void showMap();
    void showVec();
};





#endif

